1. Field of the Invention
The present invention relates to an image generating apparatus for and an image generating method of generating a three-dimensional (3D) image on the basis of three-dimensional coordinate information, which is applied to a navigation system or the like, and a computer program to perform the image generating method.
2. Description of the Related Art
Recently, the research development of an electronic control for controlling a drive of a car and the spread of a navigation system for supporting a drive are remarkable. In general, the navigation system is basically designed so as to have various databases and to display map information, current position information, various guidance information, etc. on a display unit. Moreover, such a navigation system is typically designed so as to search for a drive route in accordance with an input condition. It is further designed so as to display the searched drive route and a current position based on a GPS (Global Positioning System) measurement or a self-contained measurement on a map and carry out guidance (navigation) to a destination.
In an old type navigation system, map information, current position information, a drive route and so on are displayed as a plan view. However, in recent years, a navigation system in which a view on a front side from a currently driving point (for example, the view that the driver can see from a driver's seat through the front window of the car) is displayed is developed. In such a navigation system, the forward view is displayed as a 3D image in perspective, which is a technique for drawing a 3D image on a plane on the basis of view point of a viewer.
The old type navigation system, in which map information, a drive route and the like are displayed as a 2D image, has a 2D graphics library. In general, the 2D graphics library has routines for generating a display list of a plane image which can be directly executed by a drawing device and routines for executing the display list collectively. Thus, it is possible to pull out the performance of the drawing device and to execute the drawing operation at a high speed.
On the other hand, the current type navigation system, in which a forward view that the driver can see from a driver's seat through the front window of the car is displayed as a 3D image, has another graphics library. For example, as such a graphics library, there is OpenGL that is API (Application Programming Interface) of Silicon Graphics Inc. (Incidentally, OpenGL is a trademark of Silicon Graphics Inc.). OpenGL achieves high speed 3D image drawing by using a display list containing the coordinate transformation parameters. However, OpenGL is not suitable for the drawing device that does not deal with the display list containing coordinate transformation information. In this case, it is needed to convert the form of the display list into a suitable form for the drawing device by CPU.
Incidentally, the API is the interface rule between OS and an application running thereon. The OpenGL is the graphics library for 2D and 3D, and it has a feature that does not depend on a platform.
By the way, the above-mentioned 2D graphics library can treat only a 2D graphics display. Thus, if this is used to try a 3D graphics display, a coordinate transformation needs to be done by CPU, which brings about a problem of a reduction in a drawing speed.
Moreover, the 2D graphics library has a problem that a hidden surface removal through a Z-buffer can not be executed. Incidentally, the hidden surface removal is a technique in which, in the case that a drawing space is divided a plurality of drawing portions, the image part located closest to a viewer among image components including a plurality of partial frames constituting one frame (for example, an image of a road, an image of one building, an image of a different building, an image of a sky and the like constituting an image of one frame representative of one view) is stored for each drawing position, and then, the stored image parts of all drawing positions are combined and displayed.
On the other hand, since OpenGL uses the display list containing coordinate transformation information, it is not directly used the drawing device that does not perfectly support the coordinate transformation function according to OpenGL. In this case, it is needed to convert the form of the display list by CPU. Therefore, the problem of the reduction in the drawing speed arises.